Proving Linearizability Using Forward Simulations

نویسندگان

  • Ahmed Bouajjani
  • Michael Emmi
  • Constantin Enea
  • Suha Orhun Mutluergil
چکیده

Linearizability is the standard correctness criterion concurrent datastructures such as stacks and queues. It allows to establish observational refine-ment between a concurrent implementation and an atomic reference implemen-tation. Proving linearizability requires identifying linearization points for eachmethod invocation along all possible computations, leading to valid sequentialexecutions, or alternatively, establishing forward and backward simulations. Inboth cases, carrying out proofs is hard and complex in general. In particular,backward reasoning is difficult in the context of programs with data structures,and strategies for identifying statically linearization points cannot be defined forall existing implementations. In this paper, we show that, contrary to commonbelief, many such complex implementations, including, e.g., the Herlihy&Wing;Queue and the Time-Stamped Stack, can be proved correct using only forwardsimulation arguments. This leads to simple and natural correctness proofs forthese implementations that are amenable to automation.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

A Constructive Approach for Proving Data Structures' Linearizability

We present a comprehensive methodology for proving correctness of concurrent data structures. We exemplify our methodology by using it to give a roadmap for proving linearizability of the popular Lazy List implementation of the concurrent set abstraction. Correctness is based on our key theorem, which captures sufficient conditions for linearizability. In contrast to prior work, our conditions ...

متن کامل

A Generic Logic for Proving Linearizability

Linearizability is a commonly accepted notion of correctness for libraries of concurrent algorithms, and recent years have seen a number of proposals of program logics for proving it. Although these logics differ in technical details, they embody similar reasoning principles. To explicate these principles, we propose a logic for proving linearizability that is generic: it can be instantiated wi...

متن کامل

A Generic Logic for Proving Linearizability (Extended Version)

Linearizability is a commonly accepted notion of correctness for libraries of concurrent algorithms, and recent years have seen a number of proposals of program logics for proving it. Although these logics differ in technical details, they embody similar reasoning principles. To explicate these principles, we propose a logic for proving linearizability that is generic: it can be instantiated wi...

متن کامل

Automatically Proving Linearizability

This paper presents a practical automatic verification procedure for proving linearizability (i.e., atomicity and functional correctness) of concurrent data structure implementations. The procedure employs a novel instrumentation to verify logically pure executions, and is evaluated on a number of standard concurrent stack, queue and set algorithms.

متن کامل

Verifying Linearizability on TSO Architectures

Linearizability is the standard correctness criterion for fine-grained, non-atomic concurrent algorithms, and a variety of methods for verifying linearizability have been developed. However, most approaches assume a sequentially consistent memory model, which is not always realised in practice. In this paper we define linearizability on a weak memory model: the TSO (Total Store Order) memory mo...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2017